/**
 * @file user.js
 * @description 用户管理相关API接口
 * @created 2024-06-12
 */

import request from '@/utils/request'

/**
 * 用户管理API封装
 */
export function useUserApi() {
  return {
    /**
     * 获取用户列表
     * @param {Object} params - 查询参数
     * @returns {Promise<Object>} 响应结果
     */
    getUsers(params = {}) {
      return request({
        url: '/admin/users',
        method: 'get',
        params
      })
  },
  
    /**
     * 创建新用户
     * @param {Object} userData - 用户数据
     * @returns {Promise<Object>} 响应结果
     */
    createUser(userData) {
      return request({
        url: '/admin/users',
        method: 'post',
        data: userData
      })
    },

    /**
     * 获取单个用户详情
     * @param {number|string} userId - 用户ID
     * @returns {Promise<Object>} 响应结果
     */
    getUserById(userId) {
      return request({
        url: `/admin/users/${userId}`,
        method: 'get'
      })
  },
  
    /**
     * 更新用户信息
     * @param {number|string} userId - 用户ID
     * @param {Object} userData - 用户更新数据
     * @returns {Promise<Object>} 响应结果
     */
    updateUser(userId, userData) {
      return request({
        url: `/admin/users/${userId}`,
        method: 'put',
        data: userData
      })
  },
  
    /**
     * 删除用户
     * @param {number|string} userId - 用户ID
     * @returns {Promise<Object>} 响应结果
     */
  deleteUser(userId) {
      return request({
        url: `/admin/users/${userId}`,
        method: 'delete'
      })
    },

    /**
     * 更新用户状态
     * @param {number|string} userId - 用户ID
     * @param {Object} statusData - 状态数据 {active: 0|1}
     * @returns {Promise<Object>} 响应结果
     */
    updateUserStatus(userId, statusData) {
      return request({
        url: `/admin/users/${userId}/status`,
        method: 'patch',
        data: statusData
      })
    },

    /**
     * 重置用户密码
     * @param {number|string} userId - 用户ID
     * @returns {Promise<Object>} 响应结果，包含新密码
     */
    resetPassword(userId) {
      return request({
        url: `/admin/users/${userId}/reset-password`,
        method: 'post'
      })
  },
  
    /**
     * 获取用户权限
     * @param {number|string} userId - 用户ID
     * @returns {Promise<Object>} 响应结果
     */
    getUserPermissions(userId) {
      return request({
        url: `/admin/users/${userId}/permissions`,
        method: 'get'
      })
    },

    /**
     * 更新用户权限
     * @param {number|string} userId - 用户ID
     * @param {Object} permissionsData - 权限数据
     * @returns {Promise<Object>} 响应结果
     */
    updateUserPermissions(userId, permissionsData) {
      return request({
        url: `/admin/users/${userId}/permissions`,
        method: 'put',
        data: permissionsData
      })
    }
  }
} 